ML }  X c0C)HCCH Mhhݩh `eCDiCD`  RyHP   * 1H0芢@) Y0.Ș` i #(PMR\ \b Pgi 0  % @ / ՠ`d   0DDԝLyNN@  )?HI Y0`HIJH) * J j * hJJJ )HJ h i     } YS S0 i`΢ϣ߳H J3xj2h} 1 |9 ӭ45(420 * (0241өX.`  R *i)Lvw  ~*P}E 5 LN(G E  r s k rsrL ( E LO(0d( L iE0O +)$IC  H S8 }q p h   j 8no CDLQ CFl M  LO Ri)Llk2'")*F }$F$F$F$F$ 5 )ШF/Șl]kpqС,LQ/A! Ti)Zlk@ ܬ/i)(")")k }$F$F$F 5$/L /lF@jj(LNkle$$%8(k()` R 8 ELO Ri)^>jf | NrC s } ) vw5g   enfo Glvw LQ@iLm>j FL ~Jjjjii p qEh }jlrs`LQ:$ȱ$@+[_#{ 8  Խut! ai 8   E I   ] C } H h    ˰ 8  N   Lm E  ,  [ `LQ ,/ 8 ~/  Ơ? ѩ}/  [ /Lj0?MoLn FjMqLp NklLOLQnLoMlNLO R"(+}ըHH`Q R!!  % !   / .   FȑF! /GF \H"+0+* }! F tLQnm: J~nTF1F  *n+)5! n (, n)1JJJn(n*o} I ,0  ci a oF? @ , 8,0 ʩ0H Eh   i}  D ]DmmFLQvtu`*&!*@h ] 0 ^0` c 0l$$%}()()%*&J%H,@hH hH@,h $% 8i8$(%)0hhH ]h`() c 0H c 0 h}`hhh&JJ ](ll  LQ0  /qnoHH 9 9 H H  I9  9 } Nd EH  Q8 o n  FnoL HII/ Ih8`h`Lnon`no`u F }E VEhLO/luF l0BF/lɜɛ׽hE N  b VFL FREE SECTORS C} H) *Fh ):FȽ F FC IH' 0 d  i:Fȩ/F.l`CD/08HDIC}IHȰ/F`ȱ$>.+.i ȱ$:刄H !A \ Hȱ$*?ȝ 2. ? [_{ ,0}-:) 0$:>WI  IТ,LQH  0hLd ~ t u`C ?( 0(C.` E } R =! .ti S0N EE D XC )0')AY  )ע ? 0E088FG \o}n  (HhLcL3 iJ i Lqp 0=rspnqopqlk`jZj0  j FL`H}FhȑFȽlFi0 h FFLFpvqwgneofLF pq7  G0i 0 FJJh1FqȱFpȱFk`B!}08`hEE D 8. =D}tui( TʩL`b!)    cȌaȌd b`aab}H8 hdaHcd8 cH hHH  \h hc` =Hh I8ih( t  ( t(!` L\}CJfCJfCJfCDfC` a  HII  INdh  `h  `n)8jHniPoijIjFIjFIjh` a } I 38  8H0 I  ' H LQ8j Y  8j NdY  &I &I &IHeH.p!}Iiq  `!.莿 2Jjj }.m Ȉ!m FG` ɩLQ z "} e Hi04 \ Ȍ  8 i h !`I0 `C Y8.`DOS SYS#} I  ` ~ݩ.C/`ba.m۩mѤC9 `C L] H  ,- '0 l $}, BLVDE`D1:AUTORUN.SYS8hhJ ȱHȱIȱBȱDȱEeeHHLV)  %}1*  ,,p-  0 I &  '0   Lw)l, 0  I&LD1:MEM.SAV&}E:D1:DUP.SYSݦ;D0 { f # &pvK@z[CC` RJf{WQ::'} D  C D     )16CS S)  C)D1 p p (}0 C9DI pCDL~CiCDiD` DD˙` d J)L !)}D L(( LL()  L| L( S LH 0p n  *} CY?  q  L L  ` )+} `A! d߰")-݆ "  $G@LLL&0") $G%,}H0 3S8`G ȱG ȱG   Gȭ Gȭ GG}GHiH8(()) G$H% `(0-})8` d)L ݆ & LGȘ ݆LL d  ! LL d)N>Q  HH).}  hyhyB q L> Lm JJ  Ln*` dB%'/}8  H H` 1 { LL   !L     Hh SY?  q  1L0}  !? S   q 1 L   Ll  Lg E`L   !L)  q 1L1}) `L0AM݊L݉ ML  N݆LLLNLMLHG!@2}1F GȱGLLEEȩÑEȑEEȑE Ed E7EȩE  q3} L !,0,0SGɛ L 1 !L EHEh W G gLLSROTCES EERF 4} G) *Gȩ GȽG GȌd q q G`  8   0G  `D5}CEDC0X:Ȣ Y ȱC* ? 0.. , 0%n ?A[ 0 : L`L  `, 0`Y6}`piH n0)բY? 08`0 7}  0$L GGȽG L `8L`L8}8`  05G)݁,G)ȱGȱGHh0})Hh` B! 8`8iiiLE`9}E8FEh( l0`ɃLL L8^~jj8jHi hEEEiEȱEiE` dTE:} H8EEȱEEȩEh J E8   . m  i`LI!)E1FR;}1LJ舩9GIH`LJJ`HGHh l`<} S gL   8 rii `дCDCG W  =}C  Lq` X٨`DOS SYS IIIIIIIIIIIIIIIC`0 ߩ0}}>} HE |||||DOS DOSDOS SYS }?}}@}CDOS SYSA} 0`BDELV !B B}`LVUQ   ]   TU J ]L!T  #      TU C} L ? .  t`GBJ V~DEHI B V0dVD}QDEHI VF9 ,0 ,0 s0hhL  L` H hDHEhE}DEL8HI   0 HI,0 0  9 .G VLOF},0 L4*IJ`llD1:AUTORUN.SYSNEED MEM.SAV TO LOAD THIS FILE.D1:MEM.SAV J y08 B|DEHIG} V0 0`B;DELV䌚 !B y`@ʆ v s? F0Ξ05: [ BDEHIH} VY8 B V  @  /DE `E:D1:DUP.SYSERROR-SAVING USER MEMORY ON DISKTYPE Y TO I}STILL RUN DOS B;DE J V (` 9 V⪍ ઍ  -J}LLu DEHILV 9 .l 9 .l  `` s$B VBHK}I|DE V BLV nB,DE J V* \*` B V BLVDEHI BLVLL}1 3u H232435; 1 ;  hh@2 e1i1LHҍ 00) 08 109hh@ Ҡ2eM}1i1232435ޥ<<8}23C+CTIMEWNTYPENAMEZTFLAWHICDMYMMTHETLONLLALPHDELTSTSSTSTRSTTTGSLSJCONO}TGMTEOMEGEANMLVRPHLRRRSSLAEAMMAALLPNLALBALPHADELTADLDLALPHADELTAPPPDELTADHALPHP}A1DELTA1ALPHA2DELTA2ST1ST1ST2ST2DHMDDMMYYDDMMYYBBQ} R} !"#$%S}&'()*+,-./012345T}6789:;<=>?@ABCDEU}FGHIJKLMNOPQRSTV}UVWXYZ[\]^_`abcdW}efghijklmnopq%%OBSERVATIONAX}L ASTRONOMY PROGRAMBY JOHN GODBEYBASED ON FORMULAS INPRACTICAL ASTRONOMYBY PETER DUFFETT-SMITH `<Y};@,;@,;@,;@,;@,H6-T6-`6- L+@%@ @1-@Z}@L @ OBSERVATIONAL ,-@@, @ ASTRONOMY w-@@*(@PROGRA[}M<-@ @L(@BY^-@@w(@ JOHN GODBEY/-@A% %+/ @\}[0@@@70@@Q0@@@[ @7(}ҠҠҠ3]}-@A 7  @'!(} WHAT DO YOU WANT TO DO?$('(A;(31. GET INFORMATION ON OBJECTS IN THE SOLAR ^}SYSTEM?>(A(<6(.2. GET INFORMATION ON DEEP SKY OBJECTS?9(<(E?(73. GET INFORMATION ON ONE OBJECT OVER A PERI_}OD OF TIME?B(E(7( Ҡ7 @)!@@ApAA @(9 @@`}(}6(ENTER THE DAY, MONTH, AND YEAR9 )<+ "FOR WHICH YOU WANT DATA (DD,MM,YY)36(<-*y7!@1)a} @) @)!@) W(}ԠԮ٠k-@Ao y @@+ , --0 b}@E- WHAT WILL BE THE OBSERVER'S0 .% GEOGRAPHICAL LATITUDE"% /n 6@)!@L(-}ŠԠc}ŠΠĠ`-@Ad n @E0 @H1) & WHAT WILL BE THE OBSERVER'S) 2-- d}%LONGITUDE? (IF THE LONGITUDE IS EAST,3. * ENTER IT AS A NEGATIVE NUMBER).4l 6A)!AJ(+}e}ԠŠΠĠ ^-@Ab l @I5/ @S , IN WHAT TIME SHOULD THE/ 6,, $DATf}A BE EXPRESSED (GMT,EST,CDT,etc.)78$ZDISABLE BRK KEY[G6-F:@,!A',6-&A(8@Dg}B7tG$bdGGSUBROUTINE DETERMINES NUMBER OF DAYS IN YEAR TO THE SELECTED DATEn4+'@,"P:'@,*6-h}@b4 A p6-@cx!@ AP$$6-P:++&@,$,'@,% A`""6-P:+%@i},$@0`,&%$77SUBROUTINE DETERMINES ECLIPTIC COORDINATES OF SUNK @A6-6Ae$+@&,&P:+@j}&,'@,%K A0<<6-Ae$+&@,%P:+&@,'@,%%@6-+A`'Ae$",$ k} AA` A!A` Ar A6-&A`A` A l}Ar6-%A`" A, A66-%Ax5@&AYd@ 6-%A`AJ&m}&6-+A`'@p,$?g$G:,T6-%%Ax5@6-Y!A`6-&A`^$RRSUBROUTINE CHANGES n}ECLIPTICAL COORDINATES TO RIGHT ASCENSION AND DECLINATION6-@#D 6-E:,""6-G:,$E:,&+G:,'E:,$G:,,o}6-D:', 6-G:,$E:,%E:,$G:,$G:,6-D:'M:6$%@,,#*# Au#*p} # A# *# A'!* @'6-%A) 6Ap*!6A`)6-q}&A A) 6@*!6A)6-%A'!A* Ap'6-&A A'!@r}* A'6-&A) 6A*!6Ap)6-%A A( *!6@(6-%As}'!Ap* A`'6-&A 6-%A`6-'@$22CONVERTS DECIMALS TO HOURS, MINt}UTES, SECONDS 6-P:,6-P:+&P:,,$@`,666-@`$++&P:,,$@`&P:+&P:,,$@`,, 6-P:,$u}X::SUBROUTINE CALCULATES RISING AND SETTING TIME OF SUNY6-@b Al 6-6-v6-%?VG Av} A+!@$6-&@$+6-&@$+!@$6-&@$+6-&@$!!6-+@$$,'+@$w}%&,!!6-+@$$,'+@$%&,!@$6-&@$!@$6-&@$6-$3x}3SUBROUTINE CALCULATES RISING AND SETTING TIME Ae 6-+6G:,'E:,,$+G:,'E:,,2@(+!@y}) 6@,2 Ae2!@%  DOESN'T RISE.('2 A4 6@'( IS CIRCUMPOLAR*'4 Az}//6-+6D:'M:6$%@,,%@,'@6-@$%& 6-%"@$!@$6-&@${}!@$6-&@$$I'(ŠҠԠ͠I(ӠȠŠL)(!ԠӠ|}Πή٠ΠL(ŠҠŠҮ(-@A '( @ GGSUBROUTINE CONVERTS L}}ST TO GST, GST TO GMT, AND GMT TO LOCAL TIME*6-'@%4 6-%@$>!@$6-&@$H~}6-@&P:+A%,'A,%P:+P:+A%,'A,'@,,%P:Ae%$+A%,,%P:@0`$+@%@,,%C}r PR6-+&CAP ,'Be%\))6-@d`e`%+A$`$,%+=%$$,f6-@$&%+@$$,p6-?W $&z} 6-@$% 6-& 6-@$%6-?rp$ 4EST6-6@ 4CST6}-6@ 4MST6-6@ 4PST6-6@ 4EDT6-6@ 4CDT6-6@ 4MD}T6-6@ 4PDT6-6@ 4GMT6-% -% %6-%@$ A$LQ}QSUBROUTINE CALCULATES RISING AND SETTING TIMES OF PLANETS, AND THEIR PHASESMV"4END' Ar`" "}"""""j6-+A`'Ae$",$'t'!A`6-&A`' A@~ 6-%&$$6-%+A`'@}p,$$G:,%'!A`6-&A`' Ap' 6-%A`' A 6-&**6-+,$+@&$,}'+@%$E:,,%%6-+A`'Ae$",$+'@@,6-%@5@&AYd006-%+A`'@p,$?g$G:,%@5}@!A`6-&A` 6-%A`6-&AYd886-+@&?g$?g,'+@%?g}$E:,,6-G:&,$G:,6-D:'M:6$%@,, 6-+G:&,,$E:,6-E:&,6-D:',F#*}# AuG#* # AH# *# AK'!* @'6-%AL}) 6Ap*!6A`)6-&AN A_) 6@*!6A)6-%A`'!A* Ap'6-&}Ab Ai'!@* A'6-&Aj) 6A*!6Ap)6-%Al Aq( }*!6@(6-%Ar'!Ap* A`'6-&At 6-%A`u 6-%6-$E:,v%}4MERCURY)4VENUS% Aw,"6-D:$G:&,'+&$E:&,,,%, A x6-$G:&,'+&$E:&,,} 6-D:,6-A}%%' 6-%A`' A '!A`6-&A`' A%++6-P:A$+@%E:&,,'@},,,6-D:++$G:,'E:,,$G:&,,'+$G:&,,, A A%"@6-% Ar - }A -- - A --$!! HMHM APPMERCURY,0.24}085,231.2973,77.1442128,.2056306,.3870986,7.0043579,48.0941733NNVENUS,.61521,355.73352,131.2895792,.0067826,.7233316,3.39}4435,76.4997524PPMARS,1.88089,126.30783,335.6908166,.0933865,1.5236883,1.8498011,49.4032001TTJUPITER,11.86224,146.966}365,14.0095493,.0484658,5.202561,1.3041819,100.2520175SSSATURN,29.45771,165.322242,92.6653974,.0556155,9.554747,2.4893741},113.4888341RRURANUS,84.01247,228.0708551,1727363288,.0463232,19.21814,.7729895,73.8768642XXNEPTUNE, 164.79558,260.35}78998,47.8672148,0.0090021,30.10957,1.7716017,131.5606494@@PLUTO,250.9,209.439,222.972,.25387,39.78459,17.137,109.941 } END MOON6-@ Ae -6-@c`$%@dTd'!A`6-&A`' A ' }6-%A`' A 6-&?$&AI80c'!A`6-&A`' A %' 6-%A`}' A 06-AQ)&?)S$((6-@'9$G:@$&@$&, 6-?X$G:,6-%&& 6-@(}$G:,*6-?!@$G:@$,46-%%&%> 6-?e$G:@$+&,,H 6-%I++6-P:A$+@&E:&},,'@,R6-&?$G:,\6-G:&,$E:@S,a6-E:&,f6-D:',g#*# A!uh#}* # A!i# *# A!k'!* @'6-%Al) 6Ap*!6}A`)6-&An A!) 6@*!6A)6-%A'!A* Ap'6-&A A!}'!@* A'6-&A) 6A*!6Ap)6-%A A!( *!6@(6}-%A'!Ap* A`'6-&A 6-%6-G:&,$G:@S,6-D:'M:6$%@,, -}- A --6-?$E:&,6-?U%?$E:,6-%$@6-%$@ A} --6-D:?fG$G:,'E:,,6-?fG$G:, 6-E:,::6-+@&?I$?I,'+@%?}I$E:%,, 6-@`&"$ 6-+%,'@ 6-6+G:,'E:,,$+G:,'E:,, %%6-6D:'M:6$%@,,%@$ ##6}-D:+$G:,,'+$E:,&$E:,,,) 6-%. 6-'@8 6-&: 6-$G:,&; 6-'+$E:,$E:,&,< 6-$E:,=} 6-D:,L 6-&M 6-$G:,&N 6-'+$E:,$E:,&,O 6-$E:,P 6-D:,V  -- A[  -}-`  -- Ae  --f +!@$6-&@$+6-&@$g +!@$6-&@$+6-&@$}j !!6-+@$,'+@%&,o !!6-+@$,'+@%&,p !@$6-&@$q !@$6-&@$}r 6-t  - Ay  --~  - A  -- $EECALCULATES RISING AND SETTI}NG TIME OF SELECTED DEEP SKY OBJECTS 6-"4END AY" ""''6-P:,%+A,$+&P:,,'@`}''6-P:,%+A,$+&P:,,'@` A - A -- - A --}$RM31,SP. GAL.,0.40,41.00T!!NGC253,SP. GAL.,0.45,-25.34VM33,SP. GAL.,1.31,30.24XM76,PLAN NEB,1.39,51.19Y}NGC752,OP CLUS,1.35,37.25ZM34,OP CLUS,2.39,42.34\M45,OP CLUS,3.44,23.58^HYADES,OP CLUS,4.17,15.31_M38,}OP CLUS,5.26,35.48`IC434,DIF NEB,5.39,-2.26bM1,NOVA,5.32,21.59dM42/43,DIF NEB,5.33,-5.22fM37,OP CLUS,5.49},32.33hM35,OP CLUS,6.06,24.20jNGC2237,DIF NEB,6.30,4.54kM50,OP CLUS,7.01,-8.16l!!NGC 2392,PLN NEB,7.26,21.0}1mM46,OP CLUS,7.40,-14.42nM47,OP CLUS,7.34,-14.21p!!NGC2438,PLN NEB,7.40,-14.36r!!NGC2440,PLN NEB,7.40,-18.05}tM44,OP CLUS,8.38,19.52vM81,SP GAL,9.52,69.18xM82,GAL,9.52,69.56z NGC3227,SP GAL,10.21,20.07|""NGC3242,}PLN NEB,10.22,-18.23~M97,PLN NEB,11.12,55.18M106,SP GAL,12.17,47.35 NGC4565,SP GAL,12.34,26.16M104,SP G}AL,12.37,-11.21M64,SP GAL,12.54,21.57""NGC5139,GL CLUS,13.24,-47.13M51,SP GAL,13.28,47.27M3,GL CLUS,13.}40,28.38M5,GL CLUS, 15.16,2.16 NGC5907,SP GAL,15.15,56.31M4,GL CLUS,16.21,-26.24M13,GL CLUS,16.40,36.3}3M12,GL CLUS,16.45,-1.52M10,GL CLUS,16.55,-4.02M92,GL CLUS,43.12,6.1M8,DIF NEB,18.02,-24.20M9,G}L CLUS,17.16,-18.28 NGC6543,PL NEB,17.59,66.38M20,NEB,17.59,-23.02NGC6572,PL NEB,18.10,6.50M17,DIF NEB},18.18,-16.12M25,OP CLUS,18.29,-19.17M22,GL CLUS,18.34,-23.57M11,OP CLUS,18.48,-6.20M57,PL NEB,18.51,}32.58 COL399,OP CLUS,19.23,20.05M55,GL CLUS,19.37,-31.03!!NGC6818,PL NEB,19.41,-14.17 !!NGC6822,IR GAL,19.4}2,-14.53"M27,PL NEB,19.57,22.35$NGC6960,NOVA,20.49,31.00&!!NGC7009,PL NEB,21.01,-11.34(M15,GL CLUS,21.28,11}.57*M2,GL CLUS,21.31,-1.03  END,("(HIT WHEN THROUGH&,(}p4 A`(4(DO YOU WANT THE LOCA}TION OF ANYqA(((OF THE DEEP SKY OBJECTS(Y/N),44N7'A Az& A`("( WHICH OBJECT& #AR}": 4END0(THAT OBJECT IS NOT IN THE LIST: A`" "" 0 A`0 P:,  6-}%@KK(P:,HA$+&P:,,MP:,DEGA$+O:,&P:O:,,,' A`XPRINTS SOLAR SYSTEM INF}Ob THE SUNl5 @@ A! A+ A5 Av - A --- A -}- (}##( //(   RISESET% ILLUM,, $_________}___________________________F:B2y,"@$)) SUNHMHM---THE MOON A }F:B2y,"@$&& MOONHMHM 6-THE PLANETS #A AF:B}2y,"@$ !! HMHM Aqp 4 Ar(4(DO YOU WANT THE LOCATION OF ANY*.((}OF THE PLANETS(Y/N)#+4N.$4& Ar ("( WHICH PLANET&> #AH>"4END4(THAT OBJECT IS NO}T ON THE LIST> ArR"\ 0 Ar@f6-@ A0p 6- A6-6-z 6-} A((//"("(HMDEG' Ar$@PRINT DEEP SKY INFOE6-}J #ART @@ A^) (})( //h  r NAMETYPE}RISESET| APF:B2y,"@$!! HMHMc6-%@"@ I $THE}RE'S MORE. HIT TO CONTINUEMY6-c A` A` @&(#11PRINTS DATA ON ONE OBJECT OVER SEV}ERAL DAYS-#2#: A6(#} FOR WHICH OBJECT DO YOU WANT DATA:<#U A (M(7ENTER THE FIRST DATE FOR WHICH }YOU WANT DATA (DD,MM,YY)U=#o7!@1) @) @)!@) M(}ԠԮa-@A}e o A F#U A0(M(7ENTER THE LAST DATE FOR WHICH YOU WANTH DATA (DD,MM,YY)UG#o7!@1) @}) @)!@) M(}ԠԮa-@Ae o A0H# " A@I#lJ(B}Ƞ}ӠԠŠΠŠŠҠҮŠҠ^-@Ab l A P#( @EZ# 6-6-}6- Ad# 6-n# 6-6-6- Ax# 6-y#b !@(2}ŠԠŠԠŠҠΠŠԠ}T-@AX b A #6-@#K @A6-6Ae$+@&,&P:+@&,'@,%K A}#<<6-Ae$+&@,%P:+&@,'@,%%@# 4SUN A#4MOON A# A#.} (}.(//TO//#(DAY #RISESET# -#! A A! A# - }A# --- A# --#F:B2y,"@$# HMHM#6-%@}# #' (HIT WHEN THROUGH$'$#. (}.(//TO//#$$(DAY #RISESET% }ILLUM# -# A# A #F:B2y,"@$$!! HMHM$6-%@$ }$ 6-"$' (HIT WHEN THROUGH$'$T$^$. (}.(//TO//h$'('(DAY #RISE}SET% ILLUMn$ #Ar$P"4END(.( IS NOT IN THE LISTB-@APF P A|$"}$ 0 A0$ - A$ A0$F:B2y,"@$$!!(HMHM$6-%}@$ $*(#(HIT WHEN THROUGH'*$ D2:ASTRON.BAS$$!!(HMHM$6-%N2 REM *** CASSETTE VERSION ***20 DIM DAT$(91),HEX(22):FOR X=0 TO 22:READ N:HEX(X)=N:NEXT X:GOTO 7040 TOTAL=TOTAL+BYTE:NEXT }X:READ CHKSUM:GOTO 2565 IF PASS=2 THEN CLOSE #1:END 70 ? "READY CASSETTE AND PRESS RETURN";:OPEN #1,8,128,"C:":RESTORE 200:}FOR X=1 TO 45:READ N:PUT #1,N:NEXT X200 DATA 0,36,211,31,245,31,169,60,141,2,211,169,0,141,231,2,133,14,169,56,141,232,2,133},15,169,115210 DATA 133,10,169,33,133,11,24,96220 DATA 133,206,169,83,141,202,32,76,139,331080 DATA 0000000000000000000000}D82065E4A900A27F9580CA10FBA90185A585A44CF61FCA20A9218DCB20A9008D2F02,227652000 DATA 0000000000000000000000000000000000000000}00000000000000000000000000000000000000000000000000,4398552010 DATA 000000000000000000000000000000000000000000000000000000000}000000000000000000000000000000000,439855000000000,4398552010 DATA 000000000000000000000000000000000000000000000000000000000)2 REM *** DISK VERSION ***20 DIM DAT$(91),HEX(22):FOR X=0 TO 22:READ N:HEX(X)=N:NEXT X:GOTO 7040 TOTAL=TOTAL+BYTE:NEXT X:RE }AD CHKSUM:GOTO 2565 IF PASS=2 THEN PUT #1,224:PUT #1,2:PUT #1,225:PUT #1,2:PUT #1,115:PUT #1,33:CLOSE #1:END 70 ? "INSERT D }ISK WITH DOS, PRESS RETURN";:DIM IN$(1):INPUT IN$:OPEN #1,8,0,"D:AUTORUN.SYS"90 RESTORE 90:FOR X=1 TO 16:READ N:PUT #1,N:NEX }T X:DATA 255,255,246,31,142,49,133,206,169,83,141,202,32,76,139,331080 DATA 0000000000000000000000D82065E4A900A27F9580CA10FB }A90185A585A44CF61FCA20A9218DCB20A9008D2F02,22765,202,32,76,139,331080 DATA 0000000000000000000000D82065E4A900A27F9580CA10FB 1+, DATHEXLINDATLIDDBYTPASCHKSUTOTA@} *** ROUNDUP *** 990,1,2,3,4,5,6,7,8,9,0,0,0,0,0,0,0,10,11,12,13,14,15r;@,9}@",/-@"3"<68,-@ L6-A V#A` @`r( CHECKING DATA86-%@(LINE:}!"8B:,@AF%6-F:A,%F:A,$AV+C(LINE  MISSING!Fq-@@@}56-@:7<,,&@H[6-@:7%@<%@,,&@Hq6-8,$@%8,#."@*@ $". @}%(! 6-% "!"@%2 A< F:A,@AdJ( WRITING FILE 6-@,6-A }6#A@ @`J @%n(BAD DATA: LINE ee488A489848AE9E24BDA124BCAA248D0AD48D04D48C16D0AD07D0F007A90}19D5D20D01CBD5428C939F015AD04D0,5284ee0D06D0F00DBDBC24F008A9009DBC24FE53208D1ED0E8E009D002A2008E9E2468A868AA6840030000000}0000000,9613ff000000000000000000000000A200BD00E09D0008BD00E19DFF08BD00E29DFF09BD00E39DFF0AE8D0E5A9088DF4,14092ff02A20}0BDE9239D0808E8E010D0F5A200BDF9239D1808E8E010D0F5A200BD29249D2808E8E010D0F5A2008A9D00,19575ff039D00049D00059D00069D00079D}00369D00379D00389D0039E8D0E2A9038D1A368D1D368D20368D1D378D2037,23041ff8D2038A9048D1B368D1E368D21368D1E378D21378D2138A9058}D1A39A9068D1B3920D925A9008D0002A9208D01,26542$ff02A9C08D0ED4A93F8D2F02A9038D1DD0A90A8D3002A9228D3102A9118D6F02A9C68DC802A9}D08DC1028DC202A9,31378.ff0A8DC0028DC3028DC702A9A88DC402A9E48DC502A9168DC602A9008D08D0A9018D09D08D0AD0A9018D0BD0A9FF,36715}8ff8D09D28D0CD0A9308D02D3A9F08D00D3A9348D02D3A9008D07D4A93C8D00D0A9308D01D0A9408D02D0A9448D07,41986BffD0A94C8D06D0A9548D}05D0A95C8D04D0A9648D03D0A9648D7F24A9008D08D2A9038D0FD2A9648D00D2A91E8D02,47237LffD2A9C88D06D220C12220312920A625A9008D7726A}D0BD4C919D0F9A9CF8D2202A9248D2302A9018DA225ADA225,52153VffD0FBAD7726F0034C3E29AD2F28D003208F2220762720C1224CE7217070806057}5D248050570036805057003680,56322`ff505700368050570036805057003680505700368050575D248050463924410A22A200BD4124DD8122F004901}4B0,59914jff05E8E006D0EFA200BD41249D8122E8E006D0F5A200BD41249D7922E8E006D0F5A9748D3722A9228D3822600000,65239tff00000010}101010101000001010101010100000000000000000AD00D3C90FF01CA900854DAD00D3C90EF012C90D,67749~ffD00DAD7F24C998F006EE7F24EE7F246}0AD7F24C932F0F8CE7F24CE7F2460CEE82330034CF622A9048DE823AEDB,73566ff23BDDC238D1123E8BDDC238D1223E8BDDC238D1723E8BDDC238D18}23E8E00CD002A2008EDB23AC7F24A200BD23,78816ff23990004C8E8E023D0F4AD7F24186911A8A200BDFFFF990005BDFFFF990006C8E8E01AD0EE600}000263632327A,84216ff323222267C78707070707070707070383E1F030303060C0402000000000000000F1F3F5F5F5F5F5F1F10303030,86597f}f50A020400000000000081C1CFEFEF6F2F0E0E0E0E030380C040408080000000000000000000F1F3F5F5F5F9F9F,89981ff1F1818182828284850500}0000000081C1CFEFEF6F2F2E0E0E0E0202020205050505040000000000000000F1F3F,93255ff5F5F5F5F5F1F18080808080805050400000000081C1C}FEFEF6F2F0E0E0E0E0606060A0A0A02040000000004523,97003gg5E2377239023A923C2230000FF0306FF18306000FF0000FF00000000000F1F2FCC0}A0A0004FEF0F03048080080,100406gg4F3F1F1C6406000CFEF0F030282800000F7F8F0C1414000CFEF0F018141020701F1F0F0B08080000E0F0E8A82}0,103874gg20000033232F32250010101010101000232F373300130000000000000000000000000000000102010201020102,104441gg01020102}0102010201020102010201020102010201020102010200AE9B24E030D002A200A000BDF923991808E8,106539ggC8C010D0F48E9B2460000000000000}00000000000000000000000000000000000C000602040401020000000101,107861gg00010001000100000000000000000000A9008DA225EE9825EE99}25EEA325AD7726F0034C5FE4ADA425F006CEA4,111628gg254CF924208024ADA5258DA425A9008DA225A200E000F073BDBD24F031100620DD284C6025}BD9A25F006DE9A25,116455 gg4C6025BDA124E90130069DA1244C5A25A9079DA124FEC724BDB3249D9A254C6025AD98252901F01FBDA1246901,12104}2ggC908F00890069DA1244C6025A9009DA124DEC724BDB3249D9A25E8E007D09F20332820EE2520BE2520F8282079,125936gg294C5FE4BDA124E}902300F9DA1249DA824BDB3249D9A254C6025A90F9DA1249DA1244C60250000000000000000,129837(gg000000000006A200A9D89DAA249DB124A90A9}DB224E8208628E006D0F860A900AAA8BDC724990F22BD55289910,1345092gg22C8C8C8C8C8E8E008D0EA60A900AAA8B90F229DC724C8C8C8C8C8E8E00}8D0F060A201207826BDC724300AC924,140758<ggF013E8E007D0EF60A9019DBD24A9009DC7244CFC25A91E8DFD29A9A88D07D2BD5528C938F00FC937F}019C936F0,146672Fgg2BC939F0034CFC25CE4D24CE5220F0382086284CFC25CE5220CE4D24CE4D24CE52203024F0222086284CFC25CE,151500Pgg}5220CE4D24CE4D24CE4D24CE5220CE5220F00830062086284CFC25A9018D77264CFC2500BDBD24F00160BD5420,155973ZggDDC724D005A9019DBD2460}00008000000000000000000000000000000000000000000000000000804040000000,157674dgg00000000000000000000000000000000000000008040}4020200000000000000000000000000000000000000000,157994ngg008040402020101000000000000000000000000000000000000000804040202010 }100808000000000000000000,158714xgg0000000000000000804040202010100808040400000000000000000000000000000080404020201010080804 }04,159466gg020200000000000000000000000000804040202010100808040402020101000000000000000000000000000000,159852gg0000000 }0000000001C2222C181414141413C0000A9012C2F28305A7077D010AD8402F00160A9018D2F28A2008E,162830gg3028AD98252901F0EEA91A8D3128A }C7F24AE3028BD8C26990003E8C8CE3128D0F338E0CEB0048E302860A91AAC,167882gg7F24A200BD5C27990007C8E8E01AD0F4A9F58D9925A9808D2F2 }860AD9925F00160A9408D2F28AC7F24A21BA900,173041gg990007C8CAD0F9A9018D302860AD98252901F00160AE3028A9FF0ACAD0FC8D3228AC7F24A}21BB900032D322899,177885gg0003C8CAD0F3AD30286901C90AF0048D302860A9008D2F2860000000FFA201BD5E20D006E8E008D0F660A9009D,1826}68gg5E202066286002050A640AD87600020304002436363636363624000000000000000000A9008D9925BD5D286D65,184962gg288D6528FE5528}BD5528C939F008C93AF0049D552860BDE828A8B94D289DAA24B949289D5D28B951289DB324C0,190116gg03F024A9369D5528A9009DC724A9019DBD24}A9009D5420FEE828BDE828C904D005A9009DE82860A9399D5528A9,195231gg009DC724A9FF9DBD24AD0AD28DDC284CAF2800CEDC28D005A9019DBD24}60000101000200010000010100020001,198851gg00AD6528D00160AD98252903F00160CE6528A005B94124C919F006690199412460A9109941248810}EB60A9008D,203171gg6528A005A91099412488D0F860A9088D1FD0AD1FD0C906D0F960203C22203129A9008D2F288D30288D31282021,207502gg}29A9398D3722A9248D3822A9038D5220A9138D4D24A200BDF0289DE828E8E008D0F56868684C6620AD7726F00F,212388ggA9008D01D28D03D28D05D}28D07D260ADFB29F012AD6528F01EA9008DFB29A9A88D01D24CB529AD98252902D00A,217592ggA9008D01D2A9018DFB29EEFC29ADFC29C915D005A90}08DFC29C900F017C903F01BC90AF00FC90CF013C90FF007,223087ggC911F00B4CEC29A9848D03D24CEC29A9008D03D2ADFD29F006CEFD294CFA298D0}7D26001000000000000000000,227475D2:ROUNMAIN.BASggC911F00B4CEC29A9848D03D24CEC29A9008D03D2ADFD29F006CEFD294CFA298D082 REM *** CASSETTE VERSION ***65 IF PASS=2 THEN CLOSE #1:END 70 ? "READY CASSETTE AND PRESS RETURN";:OPEN #1,8,128,"C:":RES}TORE 200:FOR X=1 TO 35:READ N:PUT #1,N:NEXT X200 DATA 0,21,221,31,255,31,169,60,141,2,211,169,0,141,231,2,133,14,169,56,141,}232,2,133,15,169,102210 DATA 133,10,169,32,133,11,24,961570 DATA 0000000000000000000000000000000000000000000000000000000000}00000000000000000000000000000000,2274751580 DATA 000000000000000000000000000000000000000000000000000000000000000000000000000}000000000000000,227475000000000,2274751580 DATA 0000000000000000000000000000000000000000000000000000000000000000000000000002 REM *** DISK VERSION ***65 IF PASS=2 THEN PUT #1,224:PUT #1,2:PUT #1,225:PUT #1,2:PUT #1,102:PUT #1,32:CLOSE #1:END 70 ? }"INSERT DISK WITH DOS, PRESS RETURN";:DIM IN$(1):INPUT IN$:OPEN #1,8,0,"D:AUTORUN.SYS"90 PUT #1,255:PUT #1,255:PUT #1,0:PUT }#1,32:PUT #1,4:PUT #1,42ESS RETURN";:DIM IN$(1):INPUT IN$:OPEN #1,8,0,"D:AUTORUN.SYS"90 PUT #1,255:PUT #1,255:PUT #1,0:PUT ;------------------------;ROUNDUP by RICHARD LOKEN;------------------------; EQUATES FOR "ROUNDUP"DMACTL=$22FCHBASE!}=$2F4POKMSK=16RTCLOC=18ATRACT=77VDSLST=512CDTMV2=538CDTMA1=552VVBLKI=546SDMCTL=559SDLSTL=560GPRI"}OR=623STRIG=$284STRIG0=644PCOLR0=704PCOLR1=705PCOLR2=706PCOLR3=707COLOR0=708COLOR1=709COLOR2=710#}COLOR3=711COLOR4=712CHBAS=756HPOSP0=$D000M0PF=$D000HPOSP1=$D001M1PF=$D001HPOSP2=$D002M2PF=$D002HP$}OSP3=$D003M3PF=$D003HPOSM0=$D004P0PF=$D004HPOSM1=$D005P1PF=$D005HPOSM2=$D006P2PF=$D006HPOSM3=$D007%}P3PF=$D007M0PL=$D008SIZEP0=$D008M1PL=$D009SIZEP1=$D009M2PL=$D00ASIZEP2=$D00AM3PL=$D00BSIZEP3=$D00B&}P0PL=$D00CSIZEM=$D00CP1PL=$D00DP2PL=$D00EP3PL=$D00FTRIG0=$D010PRIOR=$D01BGRACTL=$D01DHITCLR=$D01EC'}ONSOL=$D01FAUDF1=$D200AUDC1=$D201AUDF2=$D202AUDC2=$D203AUDF3=$D204AUDC3=$D205AUDF4=$D206AUDC4=$D207(}AUDCTL=$D208STIMER=$D209RANDOM=$D20APORTA=$D300PACTL=$D302HSCROL=$D404PMBASE=$D407WSYNC=$D40AVCOUNT)}=$D40BNMIEN=$D40ESETVBV=$E45CSYSVBV=$E45FXITVBV=$E462CGREY=$00CGOLD=$10CORANG=$20CREDOR=$30CPINK=*}$40CPURPL=$50CPURBL=$60CBLUE1=$70CBLUE2=$80CLBLUE=$90CTURQO=$A0CGRNBL=$B0CGREEN=$C0CYEGRN=$D0CORG+}RN=$E0CLORNG=$F0COLBK=$2C8MYPMB=$0000MISSIL=$0300PL0=$0400PL1=$0500PL2=$0600PL3=$0700CHSET=$08,}00;These memory areas are reserved for;the scrolling cow lines. They are;aligned on 256-byte boundaries for;ease of use-}.COW=$3600;3 COWSCOW.A=$3700;2 COWSCOW.B=$3800;1 COWANG=$3900;LONE ANGUSORG$2000;the display list inte.}rupt stuffs;the cow color and fine scrolling;data into the hardware;also checks herding and lasso;collisions - sets flags/} for ;other routines to processDLIPROCPHA; save all registersTXAPHATYAPHALDXLINECT; get DLI counterLDAL0}NSC1,X; get fscrol for lineLDYLNCOL1,X; get line colorSTAWSYNCSTAHSCROL; and stuff them intoSTY$D016; the har1}dware; check for hits on cowsLDAP3PFBEQ:L3LDA#1STAHIT-1,XBNE:L2; check for herding:L3LDALMSHI-1,XCM2}P#HIGH ANGBEQ:L2LDAP0PF; get the coll. reg.ORAP2PFBEQ:L2; if zero then no coll.LDALFRT-1,XBEQ:L2LDA#03}; yes, a coll. ; changeSTALFRT-1,X; dir. of prev. lnINCNUMHRD-1,X:L2STAHITCLR; and clear hit; finish DLIINX4}CPX#9; 8 is too manyBNE:LLDX#0:LSTXLINECTPLATAYPLATAXPLARTICOWLFTDB3DB0NUMHRDDB0,0,0,0,0,0,05},0DB0,0HITDB0,0,0,0,0,0,0,0;program begins and restarts hereSTARTPROCLDX#0; TRANSFER CHARACTER SET:LLDA$E006}0,XSTACHSET,XLDA$E100,XSTACHSET+$FF,XLDA$E200,XSTACHSET+$1FF,XLDA$E300,XSTACHSET+$2FF,XINXBNE:LLD7}A#HIGH CHSET;INSTALL CHAR SETSTACHBASLDX#0; ALTER CHARACTER SET:L1LDAFNCE,XSTACHSET+8,XINXCPX#$10BNE:L8}1LDX#0:L2LDACOW1,XSTACHSET+$18,XINXCPX#$10BNE:L2LDX#0:L5LDAANGUS,XSTACHSET+$28,XINXCPX#$10B9}NE:L5LDX#0; CLEAR P/M AND COW LINESTXA:L3STAMISSIL,XSTAPL0,XSTAPL1,XSTAPL2,XSTAPL3,XSTACOW,XSTACO:}W.A,XSTACOW.B,XSTAANG,XINXBNE:L3;now set up the character bytes in the;cow lines that represent the cows.LDA;}#3STACOW+26STACOW+29STACOW+32STACOW.A+29STACOW.A+32STACOW.B+32LDA#4STACOW+27STACOW+30STACOW+33<}STACOW.A+30STACOW.A+33STACOW.B+33LDA#5STAANG+26LDA#6STAANG+27JSRINILMSLDA#LOW DLI; install DLIS=}TAVDSLSTLDA#HIGH DLISTAVDSLST+1LDA#$C0;ENABLE DLISTANMIENLDA#$3F; EN.SIN RES + WIDE PFSTASDMCTLLDA#3>}; ENABLE P/MSTAGRACTLLDA#LOW DISPL; install DISPLISTSTASDLSTLLDA#HIGH DISPLSTASDLSTL+1LDA#$11; $11 for 5t?}h playerSTAGPRIORLDA#$C6STACOLOR4LDA#$D0; horse is STAPCOLR1STAPCOLR2LDA#$A; rider and lassoSTAPCOL@}R0STAPCOLR3STACOLOR3LDA#$A8STACOLOR0LDA#$E4STACOLOR1LDA#$16STACOLOR2LDA#0; rider is narrowSTASA}IZEP0LDA#1; horse is mediumSTASIZEP1STASIZEP2LDA#1; lasso is MEDIUMSTASIZEP3LDA#$FFSTASTIMERSTASIZEB}MLDA#$30; enable joystickSTAPACTLLDA#$F0STAPORTALDA#$34STAPACTLLDA#HIGH MYPMBSTAPMBASELDA#60STAC}HPOSP0LDA#48STAHPOSP1LDA#64STAHPOSP2LDA#68STAHPOSM3; lasso hposLDA#76STAHPOSM2LDA#84STAHPOSM1D}LDA#92STAHPOSM0LDA#100STAHPOSP3LDA#100STAVPOSP0LDA#0STA$D208LDA#3STA$D20FLDA#100STAAUDF1E}LDA#30STAAUDF2LDA#200STAAUDF4JSRCWPKLDJSRCHEKSTJSRINICOLLDA#0STAGAMEND:L10LDAVCOUNTCMP#$19BF}NE:L10LDA#LOW VBLANKSTAVVBLKILDA#HIGH VBLANKSTAVVBLKI+1;most processor time is spent waiting;for the next VBLG}ANK. mnloop handles;the stick,lasso, and player image;lasso in progress will mask the;stick handlerMNLOOPPROCLDA#1H}STAVBDONE:LLDAVBDONEBNE:LLDAGAMENDBEQ:L3JMPNEWGAM:L3LDALASTATBNE:L2JSRUPDOWN:L2JSRROPEMJSRCWPI}KLDJMPMNLOOP;simple display list with lms and;hscrol enable and dli on each lineDISPLDB$70,$70,$80,$60,$57LMS1DWJ}FENCEDB$80,$50,$57CW1DWCOWDB$80,$50,$57CW2DWCOWDB$80,$50,$57CW3DWCOWDB$80,$50,$57CW4DWCOWDB$80,$50K},$57CW5DWCOWDB$80,$50,$57CW6DWCOWDB$80,$50,$57FN1DWFENCEDB$80,$50,$46SCRLNDWSCORLNDB$41DWDISPL;cL}hecks for hi score and sets score;for end of game score lineCHKHSCPROCLDX#0:LLDASCORE,XCMPHSCR,XBEQ:L1BCC:M}L2BCS:L3:L1INXCPX#6BNE:L:L3LDX#0:L4LDASCORE,XSTAHSCR,XINXCPX#6BNE:L4:L2LDX#0:L5LDASCORE,XN}STASCR1,XINXCPX#6BNE:L5LDA#LOW HSCRLSTASCRLNLDA#HIGH HSCRLSTASCRLN+1RTSHSCRLDB0,0,0,0,0SCR1DB$1O}0,$10,$10,$10,$10,$10DB0,0HSCRDB$10,$10,$10,$10,$10,$10DB0,0,0,0,0,0,0,0;reads stick for up/down and sets;vposp0 P}for CWPKLDUPDOWNPROCLDAPORTACMP#$FBEQ:LLDA#0STAATRACTLDAPORTACMP#14; GO UP ?BEQUPCMP#13; GO DQ}OWN ?BNE:LDOWNLDAVPOSP0CMP#152BEQ:LINCVPOSP0INCVPOSP0:LRTSUPLDAVPOSP0CMP#50BEQ:LDECVPOSP0DER}CVPOSP0RTS;updates horse + cowboy whether it;needs it or not and animates horseCWPKLDPROCDECHRSCTRBMI:LJMP:S}L1:LLDA#4STAHRSCTRLDXHRSAVLDAHS,XSTA:L5+1INXLDAHS,XSTA:L5+2INXLDAHS,XSTA:L6+1INXLDAHS,XT}STA:L6+2INXCPX#12BNE:L2LDX#0:L2STXHRSAV:L1LDYVPOSP0LDX#0:L3LDACOWBOY,XSTAPL0,YINYINXCPX#35U}BNE:L3LDAVPOSP0CLCADC#17TAYLDX#0:L5LDA$FFFF,XSTAPL1,Y:L6LDA$FFFF,XSTAPL2,YINYINXCPX#26BNEV}:L5RTSEPROC;image data for cowboy and horseCOWBOYDB0,0,$26,$36,$32,$32DB$7A,$32,$32,$22,$26,$7CDB$78,$70,$70W},$70,$70,$70DB$70,$70,$70,$70,$38,$3EDB$1F,3,3,3,6,$C,4,2,0,0H1ADB0,0,0,0,0,$F,$1F,$3FDB$5F,$5F,$5F,$5F,$5F,$1FX}DB$10,$30,$30,$30,$50,$A0DB$20,$40,0,0,0H1BDB0,0,8,$1C,$1C,$FE,$FEDB$F6,$F2,$F0,$E0,$E0,$E0DB$E0,$30,$38,$C,4,4,Y}8,8DB0,0,0,0H2ADB0,0,0,0,0,$F,$1F,$3FDB$5F,$5F,$5F,$9F,$9F,$1FDB$18,$18,$18,$28,$28,$28DB$48,$50,$50,0,0H2BDZ}B0,0,8,$1C,$1C,$FE,$FEDB$F6,$F2,$F2,$E0,$E0,$E0DB$E0,$20,$20,$20,$20,$50DB$50,$50,$50,$40,0,0H3ADB0,0,0,0,0,$F,$[}1F,$3F,$5FDB$5F,$5F,$5F,$5F,$1F,$18,8DB8,8,8,8,5,5,4,0,0H3BDB0,0,8,$1C,$1C,$FE,$FEDB$F6,$F2,$F0,$E0,$E0,$E0DB$\}E0,$60,$60,$60,$A0,$A0DB$A0,$20,$40,0,0,0HRSAVDB0HSDWH1ADWH1BDWH2ADWH2BDWH3ADWH3BHRSCTRDB0FNCEDB]}0,$FF,3,6,$FF,$18,$30,$60DB0,$FF,0,0,$FF,0,0,0COW1DB0,0,$F,$1F,$2F,$CC,$A,$ADB0,4,$FE,$F0,$F0,$30,$48,8COW2DB0,$^}80,$4F,$3F,$1F,$1C,$64,6DB0,$C,$FE,$F0,$F0,$30,$28,$28COW3DB0,0,$F,$7F,$8F,$C,$14,$14DB0,$C,$FE,$F0,$F0,$18,$14,$10_}ANGUSDB$20,$70,$1F,$1F,$F,$B,8,8DB0,0,$E0,$F0,$E8,$A8,$20,$20SCORLNDB0,0,51,35,47,50,37,0SCOREDB16,16,16,16,16,16,`}0DB35,47,55,51,0CWLEFTDB19,0,0,0DB0,0,0,0,0,0,0,0,0,0,0,0FENCEDB1,2,1,2,1,2,1,2,1,2DB1,2,1,2,1,2,1,2,1,2,1,2a}DB1,2,1,2,1,2,1,2,1,2,1,2VPOSP0DB0;animates cows in character setANIMATEPROCLDXCHINDXCPX#$30BNE:LLDX#0:b}LLDY#0:L1LDACOW1,XSTACHSET+$18,YINXINYCPY#$10BNE:L1STXCHINDXRTSCHINDXDB0,0,0LINECTDB0,0,0LNSC1c}DB0,0,0,0,0,0,0,0,0LNCOL1DB0,0,0,0,0,0,0,0,$CLN1SPDB0,6,2,4,4,1,2,0,0,0LFRTDB1,1,0,1,0,1,0,1,0,0SLMS1DB0,0,0,0,0d},0,0,0;controls speed of character anima-;tion and processes fine and coarse;scrolling;updates three clocks which are use}ed;by other routinesVBLANKPROCLDA#0STAVBDONEINCVBCTRINCVBCTR1INCVBCTR2LDAGAMENDBEQ:L14JMPSYSVBV:f}L14LDASSPEED; time to animate?BEQ:L; yesDECSSPEED; no just countJMP:L1:LJSRANIMATELDASPEED; reset countg}erSTASSPEED:L1LDA#0; handshake with mainSTAVBDONELDX#0; start scrolling sequence:L7CPX#0BEQMVFENC:L11LDq}BBJDOS SYSBNASTRON BASBLPADCASSLSTBLPADDISKLSTB6ROUNMAINBASBROUNCASSLSTBROUNDISKLSTB ROUNDUP ASMBFORTH1 BASBFORTH2A BASB FORTH2B ASMBFORTH5 BASBFORTH6 BASBCIO1 LSTB CIO2 LSTB CIO3 LSTB CIO4 LSTBCIO5 LSTBCIO6 LSTB CIO7 LSTBCIO8 LSTBCIO9 LSTBSCROLL BASB^0ASSAULT BASALFRT,XBEQGOLEFTBPLGORITJSRCOUNTDJMPNXLNGORITLDASLN1SP,XBEQ:L2DECSLN1SP,XJMPNXLN:L2LDALNSC1,XSBr}C#1BMI:L4STALNSC1,XJMP:L8:L4LDA#7STALNSC1,XINCSLMS1,XLDALN1SP,XSTASLN1SP,XJMPNXLNGOLEFTLDAVBCTs}RAND#1BEQNXLNLDALNSC1,XADC#1CMP#8BEQ:L6BCC:L6STALNSC1,XJMPNXLN:L6LDA#0STALNSC1,XDECSLMS1,t}X:L8LDALN1SP,XSTASLN1SP,XNXLNINXCPX#7BNE:L11;resolve hardware collisions, check;scrolling for events and effu}ect;the lms's so the fence and cows;moveJSRCHKHITJSRLMSCK; check for excessJSRLMSLDJSRSETSCOJSRSOUNDJMPv}SYSVBV;the fence never coarse scrolls;16 fine scrolls = two charactersMVFENCPROC:LLDALNSC1,XSBC#2BMI:L1STALw}NSC1,XSTALNSC1+7,XLDALN1SP,XSTASLN1SP,XJMPNXLN:L1LDA#15STALNSC1,XSTALNSC1,XJMPNXLNVBCTRDB0VBCTR1x}DB0SLN1SPDB0,0,0,0,0,0,0,0VBDONEDB0VBCTR2DB0SSPEEDDB0SPEEDDB6; speed of animation;initializes color shadowy}s and;loads six groups of cowsINICOLPROCLDX#0LDA#$D8STALNCOL1,XSTALNCOL1+7,XLDA#$ASTALNCOL1+8,X:LINXz}JSRNEWCOWCPX#6BNE:LRTS;writes lms work area into the;display listLMSLDPROCLDA#0TAXTAY:LLDASLMS1,X{}STALMS1,YLDALMSHI,XSTALMS1+1,YINYINYINYINYINYINXCPX#8BNE:LRTS;takes display list lms from ori-;|}ginal load and shadows them in;the SLMS1 arrayINILMSPROCLDA#0TAXTAY:LLDALMS1,YSTASLMS1,XINYINYINYINY}}INYINXCPX#8BNE:LRTS;critical routine which prevents;scrolling from going beyond limits;calculates missed cows~},brings;herded cows back and checks for;end of gameLMSCKPROC; check lms for excessLDX#1:LJSRHERDLDASLMS1,XBM}I:L1CMP#LOW COW+36BEQ:L2:L3INXCPX#7BNE:LRTS:L1LDA#1STALFRT,XLDA#0STASLMS1,XJMP:L3:L2LDA#3}0STAMISCOWLDA#$A8STAAUDC4LDALMSHI,XCMP#HIGH COW+2BEQ:L4CMP#HIGH COW+1BEQ:L5CMP#HIGH COWBEQ:L6}CMP#HIGH ANGBEQ:L4JMP:L3:L4DECCWLEFTDECCOWLFTBEQ:L7JSRNEWCOWJMP:L3:L5DECCOWLFTDECCWLEFTDECCWLE}FTDECCOWLFTBMI:L7BEQ:L7JSRNEWCOWJMP:L3:L6DECCOWLFTDECCWLEFTDECCWLEFTDECCWLEFTDECCOWLFTDECCOW}LFTBEQ:L7BMI:L7JSRNEWCOWJMP:L3:L7LDA#1STAGAMENDJMP:L3GAMENDDB0;calculates time to return cows;afte}r being herded. The number;of times the line has been;herded shortens the return timeHERDPROCLDALFRT,XBEQ:L1RTS}:L1LDANUMHRD,XCMPSLMS1,XBNE:L2LDA#1STALFRT,X:L2RTSLASSO1DB0,0,$80,0,0,0,0,0,0,0DB0,0,0,0,0,0,0,0,0,0,0,}0DB0,0,0,0; second imageDB0,0,$80,$40,$40,0,0,0,0,0DB0,0,0,0,0,0,0,0,0,0DB0,0,0,0,0,0; third imageDB0,0,}$80,$40,$40,$20,$20,0,0,0DB0,0,0,0,0,0,0,0,0,0DB0,0,0,0,0,0; fourth imageDB0,0,$80,$40,$40,$20,$20,$10,$10DB0,}0,0,0,0,0,0,0,0,0,0DB0,0,0,0,0,0; fifth imageDB0,0,$80,$40,$40,$20,$20,$10,$10DB8,8,0,0,0,0,0,0,0,0,0DB0,0,0,0},0,0; sixth imageDB0,0,$80,$40,$40,$20,$20,$10,$10DB8,8,4,4,0,0,0,0,0,0,0DB0,0,0,0,0,0; seventh imageDB0,0,}$80,$40,$40,$20,$20,$10,$10DB8,8,4,4,2,2,0,0,0,0,0DB0,0,0,0,0,0; eigthth imageDB0,0,$80,$40,$40,$20,$20,$10,$10}DB8,8,4,4,2,2,1,1,0,0,0DB0,0,0,0,0,0LASSO2DB0,0,0,0,0,0,0,0DB0,0,0,0,0,0,$1C,$22,$22,$C1,$81DB$41,$41,$41,$41,$3}C,0,0;throws the lasso,sets flag which;disables the stick while lasso is;on screenROPEMPROCLDA#1; test for appropr}iateBITLASTAT; sequenceBMI:L; initial recallBVS:L1; continue recallBNE:L2; continue shootLDASTRIG0; none }of above soBEQ:L3; check for trigger:L4RTS; not puched so return:L3LDA#1; he wants to fire soSTALASTAT; set s}tatus for cont.shtLDX#0; initial index for imageSTXLSCTR:L2LDAVBCTR; don't execute everyAND#1; timeBEQ:L4;} not yet so returnLDA#26; initialize counter forSTALSCTR1; 26 bytesLDYVPOSP0; initialize index to msLDXLSCTR;} 0,26,52,78,104,130,156:L5LDALASSO1,X; or 182 - do blockSTAMISSIL,Y; move into missileINX; next image byteINY}; next missile imageDECLSCTR1; 26 bytes been moved?BNE:L5; not yet so loop backSEC; have we done the eigtht image}?CPX#206;a=208 - 206 leaves carryBCS:L6; yes,eigtht image done soSTXLSCTR; no so store image cntRTS; for next} time and return:L6LDA#26; set up fill for pl3LDYVPOSP0; and same vertical posLDX#0; initialize ctr for image:L7}LDALASSO2,X; get image byteSTAPL3,Y; and put in pl3INY; next vertical positionINX; next image byteCPX#26; }26 bytes moved ?BNE:L7; no go do moreLDA#245; yes - set delay for recalSTAVBCTR1LDA#$80; and set status for re}callSTALASTATRTS:LLDAVBCTR1; check to see if timeBEQ:L8; if = 0 then init recallRTS; not time yet:L8LDA#$}40; set status for recallSTALASTAT; in progressLDYVPOSP0; get vertical indexLDX#27; # of bytes to erase fromLD}A#0; player 3:L9STAPL3,Y; erase player 3INYDEXBNE:L9; not done yetLDA#1STALSCTRRTS:L1LDAVBCTRAND#}1BEQ:L14RTS:L14LDXLSCTRLDA#$FF:L11ASLADEXBNE:L11STAMSMASKLDYVPOSP0LDX#27:L12LDAMISSIL,YANDM}SMASKSTAMISSIL,YINYDEXBNE:L12LDALSCTRADC#1CMP#10BEQ:L13STALSCTRRTS:L13LDA#0STALASTATRTSLA}STATDB0LSCTRDB0LSCTR1DB0MSMASKDB$FF;checks HIT array (set by DLI) for;lasso hits and jumps to a routine;which }removes the cow so to speakCHKHITPROCLDX#1:LLDAHIT,XBNE:L3INXCPX#8BNE:LRTS:L3LDA#0STAHIT,XJSRC}LCOWRTSCOWRTHDB2,5,10,100COWCOLDBCGREY+10DBCYEGRN+8DBCBLUE1+6DB0COWSPDB2,3,4,0LMSHIDBHIGH FENCEDBHI}GH COWDBHIGH COWDBHIGH COWDBHIGH COWDBHIGH COWDBHIGH COWDBHIGH FENCECOWVALDB0,0,0,0,0,0,0,0NEWSCODB0};sets points to be scored by VBLANK;and advances cow sequenceCLCOWPROCLDA#0STAVBCTR1LDACOWVAL,XADCNEWSCOST}ANEWSCOINCLMSHI,XLDALMSHI,XCMP#HIGH ANGBEQNEWCOWCMP#HIGH ANG+1BEQNEWCOWSTALMSHI,XRTS;initializes va}rious cow tables and;advances sequence of cowsNEWCOWPROCLDAWHICHC,XTAYLDACOWCOL,YSTALNCOL1,XLDACOWRTH,YST}ACOWVAL,XLDACOWSP,YSTALN1SP,XCPY#3BEQ:L1LDA#HIGH COWSTALMSHI,XLDA#0STASLMS1,XLDA#1STALFRT,X:L}2LDA#0STANUMHRD,XINCWHICHC,XLDAWHICHC,XCMP#4BNE:LLDA#0STAWHICHC,X:LRTS:L1LDA#HIGH ANGSTALMSHI,}XLDA#0STASLMS1,XLDA#255STALFRT,XLDARANDOMSTAANGCNTJMP:L2ANGCNTDB0;kills time waiting to put angus o}n;the screen - angcnt set by random;number for a delay of 0 to 3 sec.COUNTDPROCDECANGCNTBNE:LLDA#1STALFRT,X}:LRTSWHICHCDB0,1,1,0,2,0,1,0TWHICHDB0,1,1,0,2,0,1,0;called from VBLANK. scores the;points accumulated in NEWSCOSE}TSCOPROCLDANEWSCOBNE:LRTS:LLDAVBCTRAND#3BEQ:L3RTS:L3DECNEWSCOLDY#5:L2LDASCORE,YCMP#$19BEQ:}L1ADC#1STASCORE,YRTS:L1LDA#$10STASCORE,YDEYBPL:L2RTS;zeroes the score at game startCLSCORPROCLDA}#0STANEWSCOLDY#5:LLDA#$10STASCORE,YDEYBNE:LRTS;freezes execution until START;key is pressedCHEKSTPRO}CLDA#8STACONSOL:LLDACONSOLCMP#6BNE:LRTS;the game is over so look for a new;high score and show the score }- high;score line;upon START key reset some arraysNEWGAMPROCJSRCHKHSCJSRCHEKSTLDA#0STALASTATSTALSCTRSTA}LSCTR1JSRCLSCORLDA#LOW SCORLNSTASCRLNLDA#HIGH SCORLNSTASCRLN+1LDA#3STACOWLFTLDA#19STACWLEFTLDX}#0:LLDATWHICH,XSTAWHICHC,XINXCPX#8BNE:LPLAPLAPLAJMPSTART;AUDF1 is point sound;AUDF2 is clippity clo}p;AUDF4 is missed cow sound;clippity clop is shaped by a;counter which toggles AUDC2SOUNDPROCLDAGAMENDBEQ:LLDA}#0STAAUDC1STAAUDC2STAAUDC3STAAUDC4RTS:LLDAPTFLAGBEQ:L1LDANEWSCOBEQ:L4LDA#0STAPTFLAGLDA#$A8}STAAUDC1JMP:L4:L1LDAVBCTRAND#2BNE:L4LDA#0STAAUDC1LDA#1STAPTFLAG:L4INCCLIPCTLDACLIPCTCMP#2}1BNE:L5LDA#0STACLIPCT:L5CMP#0BEQ:L6CMP#3BEQ:L7CMP#10BEQ:L6CMP#12BEQ:L7CMP#15BEQ:L6CM}P#17BEQ:L7JMP:L8:L6LDA#$84STAAUDC2JMP:L8:L7LDA#0STAAUDC2:L8LDAMISCOWBEQ:L9DECMISCOWJMP:L10}:L9STAAUDC4:L10RTSPTFLAGDB1CLIPCTDB0MISCOWDB0ENDSTARTAAUDC2:L8LDAMISCOWBEQ:L9DECMISCOWJMP:L10G0^rSCREEJIFFIEd""****************************n""* ATARI/FORTH/ML BENCHMA!}RK *x""* BY SALLY FORTH *""**************************** +@$* FIND ADDRESS OF SCREEN%!}%6-F:@,%AV$F:@, * ZERO SYSTEM JIFFY TIMERS'@'@ * S!}CREEN-FILL LOOP-@@2-A9%AU 6-%A@ ",* DE!}TERMINE FILL TIME6%%6-F:@ ,%AV$F:@,@J* DISPLAY FILL TIMET +^  JIFFIES!} D:FORTH1.BASME6%%6-F:@ ,%AV$F:@,@J* DISPLAY FILL TIMET +^  JIFFIES 0MLBYTJIFFIEd""****************************n""* BASIC/ML/FORTH BENCHMA%}RK *x""* ASSEMBLY DEMO FROM BASIC *""* BY SALLY FORTH *""***************************** READ %}ML DATA INTO ML$;@E,-@@E"67,.>:, * SET UP GRAPHICS MODE +@$%}* FILL SCREEN, GET TIMING6-?:C:,,* DISPLAY TIMER READING" +,  JIFFIES%}6@* DATA FOR ML ROUTINEJ[[104,169,0,133,19,133,20,162,32,160,0,169,255,145,88,200,192,240,208,249,24,165,88,105T%}QQ240,133,88,165,89,105,0,133,89,202,208,229,165,19,133,213,165,20,133,212,96D2:FORTH2A.BAS208,249,24,165,88,105T$f0100 ; ****************************0110 ; * BASIC/FORTH/ML BENCHMARK *0120 ; * ASSEMBLY VERSION *0130 ; * BY )}SALLY FORTH *0140 ; ****************************0150 ;0160 ; System equates0170 ;0180 SAVMSC = $58 ; Addr of scr)}een0190 BASRET = $D4 ; BASIC return0200 RTCLOK = $13 ; System timer0210 ;0220 ; For simplicity, we'll let0230 ; BA)}SIC set up GRAPHICS 24.0240 ;0250 PLA ; # args; ignore0260 ;0270 ; Zero the system timers0280 ;0290 LDA)} #00300 STA RTCLOK0310 STA RTCLOK+10320 ;0330 ; This is the screen-fill loop0340 ;0350 LDX #32 ; Loop 3)}2 times0360 NEXTI0370 LDY #0 ; Init J-loop0380 LDA #255 ; Fill byte0390 NEXTJ0400 STA (SAVMSC),Y ; P)}oke it!0410 INY 0420 CPY #240 ; 240 pokes yet?0430 BNE NEXTJ ; No; do another0440 CLC 0450 LDA )}SAVMSC ; Add 240 to0460 ADC #240 ; screen addr0470 STA SAVMSC0480 LDA SAVMSC+1 ; This is a0490 ADC #0)} ; 16-bit add0500 STA SAVMSC+10510 DEX ; 32 loops yet?0520 BNE NEXTI ; No; do another0530 ;05)}40 ; Screen is now filled, so pass0550 ; the timer readings to BASIC0560 ;0570 LDA RTCLOK0580 STA BASRET+10590 )} LDA RTCLOK+10600 STA BASRET0610 RTS ; Back to BASIC! ;0570 LDA RTCLOK0580 STA BASRET+10590 (J'SCREEJIFFIEd +@$nI@'@ I6-F:@,%AV-}$F:@,xE-%AvAU# E6-F:@ ,%AV$F:@, +  JIFFIES D-}2:FORTH5.BASxE-%AvAU# E6-F:@ ,%AV$F:@, +  JIFFIES D, $%e SSTRINSCREETABLOFFSEHLJIFFIEd +@$1}n'@'@ x;Av,%%6-F:A@,%AV$F:AA,%%6-F:@,%AV$F:@1},%%6-F:A4,%AV$F:A5, 6-&6-P:'AV,6-&+$AV,%@%@1}##67@<@,.>:AU,##67Av<Av,.>:AU,67@,.%%6-F:@ ,%AV$F:@1}, +  JIFFIES D2:FORTH6.BAS,.>:AU,67@,.%%6-F:@ ,%AV$F:@09100 GO TO 190110 REM Šś120 OLDTIME=TIME:ODD=ODD+1130 TIME=PEEK(20)+256*(PEEK(19)+256*PEEK(18))140 TIME=INT(15}000*TIME/60)/1000150 ELAPSE=TIME-OLDTIME160 PRINT "TIME=";TIME,170 IF ODD=2*INT(ODD/2) THEN ? " ELAPSE=";ELAPSE175 ? :RE5}TURN 180 REM Λ190 TIMER=120200 DIM FILE$(14):FILE$="D:TESTDATA"210 REM ˠӛ220 TRAP 250:AUX=0230 OP5}EN #1,6,0,"D:*.*"240 GOTO 260250 FILE$="C":AUX=128260 TRAP 34567:CLOSE #1270 REM Ϡ٠Ƞ280 REM ǭΧ5}Š290 REM ϮӮҠà300 ADDRESS=PEEK(144)+256*PEEK(145)+256310 REM ̠Ҡӛ320 NUMBER=500370 O5}PEN #1,8,0,FILE$380 ? "Ԡ"390 GOSUB TIMER400 FOR I=1 TO NUMBER410 PUT #1,PEEK(ADDRESS+I-1)420 NEXT I:CLOSE #15}430 GOSUB TIMER:? 440 OPEN #1,4,0,FILE$450 ? "Ԡ"460 GOSUB TIMER470 FOR I=1 TO NUMBER480 GET #1,A:POKE ADDRE5}SS+I-1,A490 NEXT I:CLOSE #1500 GOSUB TIMER:? 510 IO=1:OPEN #IO,8,AUX,FILE$520 ? "Ԡ"530 GOSUB TIMER540 GOSUB 65}000550 GOSUB TIMER:? 560 IO=1:OPEN #IO,4,AUX,FILE$570 ? "Ԡ"580 GOSUB TIMER590 GOSUB 7000600 GOSUB TIMER:? 615}0 END 6000 REM ϠϠԠӛ6010 IO=16*IO6020 IOCB=832+IO:POKE IOCB+2,116030 ADRHI=INT(ADDRESS/256)6040 ADRLO=ADDRESS5}-ADRHI*2566050 POKE IOCB+4,ADRLO:POKE IOCB+5,ADRHI6060 NUMHI=INT(NUMBER/256)6070 NUMLO=NUMBER-256*NUMHI6080 POKE IOCB+8,N5}UMLO:POKE IOCB+9,NUMHI6090 I=USR(ADR("hhhLV"),IO)6100 CLOSE #IO/166110 RETURN 7000 REM ϠϠԠӛ7010 IO=16*IO:T5}RAP 71007020 IOCB=832+IO:POKE IOCB+2,77030 ADRHI=INT(ADDRESS/256)7040 ADRLO=ADDRESS-ADRHI*2567050 POKE IOCB+4,ADRLO:POKE 5}IOCB+5,ADRHI7060 NUMHI=INT(NUMBER/256)7070 NUMLO=NUMBER-256*NUMHI7080 POKE IOCB+8,NUMLO:POKE IOCB+9,NUMHI7090 I=USR(ADR("5}hhhLV"),IO)7100 CLOSE #IO/167110 RETURN NUMLO=NUMBER-256*NUMHI7080 POKE IOCB+8,NUMLO:POKE IOCB+9,NUMHI7090 I=USR(ADR("4-0 GOSUB 80001 REM ӠϠ͠Ӡś5000 REM 5010 REM РҠϠԠś5020 REM 5030 IO=1:OPEN #IO,9}8,AUX,FILE$5035 REM ŠӠś5040 GR=PEEK(87):PUT #IO,GR5045 REM Š̠Ҡӛ5050 FOR I=0 TO 8:PUT #9}IO,PEEK(704+I):NEXT I5060 RAMTOP=PEEK(106)*2565070 DLIST=PEEK(560)+256*PEEK(561)5080 ADDRESS=DLIST5090 NUMBER=RAMTOP-DLIS9}T+15100 GOSUB 6000:END 6000 REM ϠϠԠӛ6010 IO=16*IO6020 IOCB=832+IO:POKE IOCB+2,116030 ADRHI=INT(ADDRESS/256)9}6040 ADRLO=ADDRESS-ADRHI*2566050 POKE IOCB+4,ADRLO:POKE IOCB+5,ADRHI6060 NUMHI=INT(NUMBER/256)6070 NUMLO=NUMBER-256*NUMHI9}6080 POKE IOCB+8,NUMLO:POKE IOCB+9,NUMHI6090 I=USR(ADR("hhhLV"),IO)6100 CLOSE #IO/166110 RETURN 8000 REM 8010 REM 9}Λ8020 REM 8040 DIM FILE$(14)8050 TRAP 8100:OPEN #1,6,0,"D:*.*"8060 AUX=0:GOTO 81108100 FILE$="C":AUX=1288110 T9}RAP 34567:CLOSE #18300 IF FILE$="C" THEN RETURN 8310 ? ""8320 TRAP 8310:INPUT FILE$8330 IF FILE$=""9} THEN 83108340 CLOSE #1:OPEN #1,8,0,FILE$8350 TRAP 34567:CLOSE #1:RETURN "8320 TRAP 8310:INPUT FILE$8330 IF FILE$=""8L0 GOSUB 800010 GOSUB 5000170 REM ŠҠӛ180 CHOLD=PEEK(705)190 X=705200 POKE X,PEEK(X+1)210 X=X+1:IF X<7=}12 THEN 200220 POKE 712,CHOLD230 GOTO 1805000 REM 5010 REM РҠϠԛ5020 REM 5030 IO=1:OPEN #IO,4,AUX,FILE$503=}5 REM ԠӠś5040 GET #IO,GR5041 IF GR>0 AND GR<9 THEN GR=GR+165042 GRAPHICS GR5045 REM Ԡ̠Ҡ=}5050 FOR I=0 TO 8:GET #IO,A:POKE (704+I),A:NEXT I5060 RAMTOP=PEEK(106)*2565070 DLIST=PEEK(560)+256*PEEK(561)5080 ADDRESS==}DLIST5090 NUMBER=RAMTOP-DLIST+15100 GOSUB 7000:RETURN 7000 REM ϠϠԠӛ7010 IO=16*IO:TRAP 71007020 IOCB=832+IO:P=}OKE IOCB+2,77030 ADRHI=INT(ADDRESS/256)7040 ADRLO=ADDRESS-ADRHI*2567050 POKE IOCB+4,ADRLO:POKE IOCB+5,ADRHI7060 NUMHI=INT=}(NUMBER/256)7070 NUMLO=NUMBER-256*NUMHI7080 POKE IOCB+8,NUMLO:POKE IOCB+9,NUMHI7090 I=USR(ADR("hhhLV"),IO)7100 CLOSE #I=}O/167110 RETURN 8000 REM 8010 REM Λ8020 REM 8040 DIM FILE$(14)8050 TRAP 8100:OPEN #1,6,0,"D:*.*"8060 AUX==}0:GOTO 81108100 FILE$="C":AUX=1288110 TRAP 34567:CLOSE #18300 IF FILE$="C" THEN RETURN 8310 ? ""83=}20 TRAP 8310:INPUT FILE$8330 IF FILE$="" THEN 83108340 CLOSE #1:OPEN #1,4,0,FILE$8350 TRAP 34567:CLOSE #1:RETURN "83<u4000 IO=1:OPEN #IO,4,0,"D:HARVEY.OBJ"4010 REM ԠΠĠŠ4020 IO=1:GOSUB 50004030 REM ԠΠӛ4040A} IO=1:GOSUB 5000:CLOSE #IO/164050 IF NUMBER<>2 THEN PRINT "Ӡ";NUMBER;"ӠĠƠ":STOP 4060 REM РϠA}Πӛ4070 I=USR(PEEK(START)+256*PEEK(FINIS))4080 END 5000 REM ԠӠӯ ӛ5010 REM ĠӠA}Ϡԛ5020 GET #IO,ADRLO:GET #IO,ADRHI5030 IF ADRLO=255 AND ADRHI=255 THEN GOTO 50205040 START=ADRLO+256*ADRHI5050 REM A}ĠӠϠР5060 GET #IO,LO:GET #IO,HI5070 FINIS=LO+256*HI5080 REM ŠҠƠӛ5090 ADDRESS=START51A}00 NUMBER=FINIS+1-START5110 GOSUB 7000:RETURN 7000 REM ϠϠԠӛ7010 IO=16*IO:TRAP 71007020 IOCB=832+IO:POKE IOCB+A}2,77030 ADRHI=INT(ADDRESS/256)7040 ADRLO=ADDRESS-ADRHI*2567050 POKE IOCB+4,ADRLO:POKE IOCB+5,ADRHI7060 NUMHI=INT(NUMBER/2A}56)7070 NUMLO=NUMBER-256*NUMHI7080 POKE IOCB+8,NUMLO:POKE IOCB+9,NUMHI7090 I=USR(ADR("hhhLV"),IO)7100 REM ϠԠŠA}š7110 RETURN R-256*NUMHI7080 POKE IOCB+8,NUMLO:POKE IOCB+9,NUMHI7090 I=USR(ADR("hhhLV"),IO)7100 REM ϠԠŠ@65 GOSUB 210210 IO=1:OPEN #1,8,0,"D:FILLERUP.DAT"220 ADDRESS=ADR(PROG$)230 NUMBER=3240240 GOSUB 6000:RETURN 6000 REM F}ϠԠӛ6010 IO=16*IO6020 IOCB=832+IO:POKE IOCB+2,116030 ADRHI=INT(ADDRESS/256)6040 ADRLO=ADDRESS-ADRHI*2566050 POKF}E IOCB+4,ADRLO:POKE IOCB+5,ADRHI6060 NUMHI=INT(NUMBER/256)6070 NUMLO=NUMBER-256*NUMHI6080 POKE IOCB+8,NUMLO:POKE IOCB+9,NUF}MHI6090 I=USR(ADR("hhhLV"),IO)6100 CLOSE #IO/166110 RETURN NUMLO=NUMBER-256*NUMHI6080 POKE IOCB+8,NUMLO:POKE IOCB+9,NUDA65 DIM PROG$(3240):PROG$(1)="0":PROG$(3240)="0":PROG$(2)=PROG$210 IO=1:OPEN #1,4,0,"D:FILLERUP.DAT"220 ADDRESS=ADR(PROG$)2J}30 NUMBER=3240240 GOSUB 7000250 A=USR(ADR(PROG$),ADR(PROG$))7000 REM ϠϠԠӛ7010 IO=16*IO:TRAP 71007020 IOCB=83J}2+IO:POKE IOCB+2,77030 ADRHI=INT(ADDRESS/256)7040 ADRLO=ADDRESS-ADRHI*2567050 POKE IOCB+4,ADRLO:POKE IOCB+5,ADRHI7060 NUMJ}HI=INT(NUMBER/256)7070 NUMLO=NUMBER-256*NUMHI7080 POKE IOCB+8,NUMLO:POKE IOCB+9,NUMHI7090 I=USR(ADR("hhhLV"),IO)7100 CLJ}OSE #IO/167110 RETURN NUMLO=NUMBER-256*NUMHI7080 POKE IOCB+8,NUMLO:POKE IOCB+9,NUMHI7090 I=USR(ADR("hhhLV"),IO)7100 CLH4000 IO=1:OPEN #IO,4,0,"D:DSKTOOL1.OBJ"4010 REM ԠΠĠŠ4020 IO=1:GOSUB 50004030 REM ԠΠӛ40N }40 IO=1:GOSUB 5000:CLOSE #IO/164050 IF NUMBER<>2 THEN PRINT "Ӡ";NUMBER;"ӠĠƠ":STOP 4060 REM ԠРN }ΠϠԠ͛4070 GRAPHICS 04080 POKE 752,1:? 4090 REM POKE 709,1484100 POSITION 2,54110 ? "RUN";CHR$(34);"D:DSN }KTOOL.PT1"4120 POSITION 2,34130 POKE 764,124140 REM РϠΠӛ4150 I=USR(PEEK(START)+256*PEEK(FINIS))4160N } END 5000 REM ԠӠӯ ӛ5010 REM ĠӠϠԛ5020 GET #IO,ADRLO:GET #IO,ADRHI5030 IF ADRLO=255 N }AND ADRHI=255 THEN GOTO 50205040 START=ADRLO+256*ADRHI5050 REM ĠӠϠР5060 GET #IO,LO:GET #IO,HI5070 FINIS=N}LO+256*HI5080 REM ŠҠƠӛ5090 ADDRESS=START5100 NUMBER=FINIS+1-START5110 GOSUB 7000:RETURN 7000 REM N}ϠϠԠӛ7010 IO=16*IO:TRAP 71007020 IOCB=832+IO:POKE IOCB+2,77030 ADRHI=INT(ADDRESS/256)7040 ADRLO=ADDRESS-ADRHI*25N}67050 POKE IOCB+4,ADRLO:POKE IOCB+5,ADRHI7060 NUMHI=INT(NUMBER/256)7070 NUMLO=NUMBER-256*NUMHI7080 POKE IOCB+8,NUMLO:POKEN} IOCB+9,NUMHI7090 I=USR(ADR("hhhLV"),IO)7100 REM ϠԠŠš7110 RETURN R-256*NUMHI7080 POKE IOCB+8,NUMLO:POKELV125 GOSUB 4000:END 4000 IO=1:OPEN #IO,8,0,"D:DSKTOOL2.OBJ"4010 ADDRESS=74204020 NUMBER=9000-74204030 GOSUB 60004040 RETUR}RN 6000 REM ϠϠԠӛ6010 IO=16*IO6020 IOCB=832+IO:POKE IOCB+2,116030 ADRHI=INT(ADDRESS/256)6040 ADRLO=ADDRESS-ADR}RHI*2566050 POKE IOCB+4,ADRLO:POKE IOCB+5,ADRHI6060 NUMHI=INT(NUMBER/256)6070 NUMLO=NUMBER-256*NUMHI6080 POKE IOCB+8,NUMLR}O:POKE IOCB+9,NUMHI6090 I=USR(ADR("hhhLV"),IO)6100 CLOSE #IO/166110 RETURN NUMLO=NUMBER-256*NUMHI6080 POKE IOCB+8,NUMLPQ5 GRAPHICS 2+16:POKE 712,14:POKE 709,102:POKE 708,20210 ? #6;" "20 ? #6;" ANALOG 400/800"30 ? #6;" V} presents "40 ? #6;" utility #3 "50 ? #6;" "60 ? #6;" "70 ? #6;" by"V}80 ? #6;" TONY MESSINA"90 ? #6;" "100 GOSUB 4000110 ? #6;" loading dsktool.utl"120 RUN "D:DSKTOOL.PTV}2"130 END 4000 IO=1:OPEN #IO,4,0,"D:DSKTOOL2.OBJ"4010 ADDRESS=74204020 NUMBER=9000-74204030 GOSUB 70004040 RETURN 7000V} REM ϠϠԠӛ7010 IO=16*IO:TRAP 71007020 IOCB=832+IO:POKE IOCB+2,77030 ADRHI=INT(ADDRESS/256)7040 ADRLO=ADDRESS-AV}DRHI*2567050 POKE IOCB+4,ADRLO:POKE IOCB+5,ADRHI7060 NUMHI=INT(NUMBER/256)7070 NUMLO=NUMBER-256*NUMHI7080 POKE IOCB+8,NUMV}LO:POKE IOCB+9,NUMHI7090 I=USR(ADR("hhhLV"),IO)7100 CLOSE #IO/167110 RETURN NUMLO=NUMBER-256*NUMHI7080 POKE IOCB+8,NUMTR\  STRINGWHERPLUDLISADd##**************Z}***************i##* DISPLAY LIST DEMO PROGRAM *n##* BY KYLE PEACOCK *s##* *x##Z}* A.N.A.L.O.G. COMPUTING *}##* ISSUE #13 *##*****************************-- PRESS 'Z }' TO EXIT.-- Ϡ PRESS ''!! };@P, -- CLEAR OUT MESSAGE SPACE'Z!}-BHHBQH#' -- READ WHERE IN MEMORY-- MESSAGE GOES, ADD ON-- FOR CHARACTER COLOR,Z"}-- & MESSAGE STRING. -- THEN INSTALL IN MEMORY.-@@ "-@@ Z#} LOCATION: -@@ -@@-@B:,&@%%&@%@:7<,,&@2Z$}% 7<,  -AP  -- NOW READ DISPLAY LIST##-- DATA & INSTALL INTO PAGE 6Z%}"' A5,"A6%16-%@6 A;@!!-- TELL ANTIC WHERE OUR NEWE-- DISPLAY Z&}LIST ISJOA`TAa@Y^-- WAIT FOR CONSOLE KEYch F:B2y,"@A`Z'}mr-- BACK TO NORMAL DISPLAYw| +-- MESSAGE STRINGS14848,64" DISPZ(}LAY LIST DEMO "14868,128" (1) GR.0 LINE" 14888,0**" I AM A GR.0 LINE OF TEXT!"14928,128Z)}" (2) GR.1 LINES"14948,192" I AM A GR.1 LINE"14968,192" AND SO AM I!"14988,128Z*}" (3) GR.2 LINES"15008,192" I'M BIGGER THAN"15028,192" ALL THE REST"15048,192" Z+} !!!!!!!!!!"15068,128" (3) GR.7 LINES"15088,128" (4) GR.8 LINES"15108,192 ::"KDUEKF8KENZ,}E9GLHMTYFBD9BAGALEMTUFBKDI3LF0HDNDEOTD76"15148,64::"838MD7ND93LFUR9MFGD63KG8NDMAGAK39TLFA51PDYA4SYTR83"!Z-}-- DISPLAY LIST DATA&+112,112,1120 70,0,585 112:6?32D66,40,58I 112N70,80,58S32Z.}X 6,6] 112b70,140,58g32l 7,7,7q 112v70,220,58{3277,4,59,77,44,59,77,4,59 112Z/}70,240,5832''79,44,59,79,4,59,79,44,59,79,4,59 65,0,6 D2:SCROLL.BAS,59,77,44,59,77,4,59 112X^u..YSHIDIXSHISHIMOVPMPMPMPMTARGENUBUILDINGEXSSXPOSYPOSPMMOVP0P1P2P3HITPMPMBASSSCD^1}HSXACADDTPDUTON @ ^2} @@^3} !"#$%&'()*+^4}************************ SPACE ASSAULT ** Version 2.9 ** Mike Walters 1983 *^5}***********************$ A#0 * Title Screen *." A p"* Draw Playfield *8 AB* Move Enem^6}y Ships *L;;P:H:,$@,%@AA A0V6-%@ A0`6-&@j @^7}6-@t!@P6-@P~"@6-%@"@6-&@0"@06-?:<@^8}<<<<<@,0"@06-?:<@<<<<<@ ,0"@06-?:<@<<<<<@,#^9} @ )!A# A'!%@8* %@D' A $* Get Random Target *.%6-P:H:,$@^:},%@.6-8,"A A@$ * Random Ship, Direction *%%6-P:H:,$@,%@ %%6^;}-P:H:,$@,%@%%6-P:H:,$@5,%@"@6-@ ("@6-A2^<}1"@12@@@<1"@12@AU@@F1"@12@@^=}@@P A@$Z* Shoot Tower Gun *dB2xn @,AP@c5/&@D^>}&@I-@@e2@@i 2x5 ,AP@c^?}5/&@D&@y"@7F:B2S,*F:B2a,C6-@O6-@@]6-%AoB2I^@}y Ay"@7F:B2T,*F:B2b,C6-@O6-@@]6-%AoB2P^A}y Ay"@7F:B2U,*F:B2c,C6-@O6-@@]6-%AoB2Q^B}y A$* Explosion Routine *N6-%@!A?2@K6-N$^C}70@@70@"2@@@"$Initialize & P/M Setup *g A^D}g9@,9@,9@,;A,;@,;@,;@ ,;@,`6-A%6-@p'6^E}-36-<6-C:,E6-C:,N6-C:,W6-C:,`6-C:,2 #A0!-@@%".68,-2 15,3^F}5,55,75,95,115,135? #AP!-@@%".68,-2";68,-? GG0,0,0,0,0,0,0,0,3,3,3,-3,3,0,0,0,-3,3,^G}-3,-3,-3,0,0,0,0,3,0,-3,0,05 #Ap!-@A%"167,.>:,5 "ff216,104,104,104,133,213,104,24,105,2,13^H}3,206,104,133,205,104,133,204,104,133,203,104,104,133,208,ff104,104,133,209,104,104,24,101,209,133,207,166,213,240,16,165,^I}205,24,105,128,133,205,165,206,1056aa0,133,206,202,208,240,160,0,162,0,196,209,144,19,196,207,176,15,132,212,138,168,177,2^J}03,164@``212,145,205,232,169,0,240,4,169,0,145,205,200,192,128,208,224,166,213,165,208,157,0,208,96J5 #AP!-@^K}@%"167,.>:,5 T+-@@"'67,.>:,+ ^+-@@ "'67,.>:,+ h+-^L}@@"'67,.>:,+ rCC102,66,129,195,129,66,102,60,126,255,213,255,126,60,129,66,36|4460,36,60,36,66,129^M},255,102,60,24,24,60,102,255I/6-P:+F:AE,%@,'@,$@;BByI6-$AVKA@'^N}AAI9A@@KAAyA#@'B2W@9B2X@KB2Y@^O}]AY@FoB2w@y A* Main Loop *6-R:,6-%8,6-%8, @H^P}6-@H!A6-A @6-@!@P6-@P$$6-?:<<<<<<@^Q},"T:,"" A# A"@# A` A* Destroy VPP *' @,^R}&@'/@&W-@@3-@ @P@O2@@S W 0' ,^S}&@'/@:6%6-F:A`,%F:Aa,$AV66-F:%@,DX-@@P8%@%F:B7p,'^T}AT2@X Np-&@%@%1,@P/@&H:,$@l2^U}@p Xk-@@P10@@M2@g0@^V}k b3%23%@l6-%@vw"@12@^W}E-@AI ]-B2HB2Qim w AP68,-A  A@$* Game Over Rout^X}ine *g+@%@?6-F:A`,%F:Aa,$AV%@S&@@qg%@@{%@^Y}@+%@@?%@@S%@@g%@@{%@@E%@@e^Z}.%@F:A`,E%@F:Aa,0@@70@@Q0@@^[}@k0@@@u A 0{!6-z@@'-@@>(@ GAME OVERP@^\}@b-@@z(@SCORE - -@@ 2(@ HIGH SCORE - D-@@W(@^]}i-@@(@ ӠԠҠR;@`,R6.;...all vpps destroyed...mission terminated...ali^^}en takeover;B:,,;B:,,6.\-@3(@7@<@ ,B6.7@,V67B:,%@,.^_}\6.{-@@0 ^2H:,$@H:,$AU@H:,$@{F:B2y,@A 0^`}A-@327 A A`  * Draw Playfield Routine *c+@%@/0^a}@I0@@@c0@@@ U @!-@@PQ,H:,$AY^b}H:,$@U%@@U *O @,AP@d3-@f@h?,AGK/ASO 4Q6-^c}#-@r@u1,AE%?/AU&M6-%@Q >Q6-#-@@1,AH&?/AR^d}%M6-%@Q H3-@@#,AE//AU3 Ra @,AI@e1/AQ@e^e}E-@i@qQ,AE]/AUa \3-@v@y#,AH//AR3 f3-@@#,^f}AE//AU3 p',AE@'/AU@zS )-@@@E-AFAT^g}@K,O S  @,AG@w1/AE@wC/AE@uU/AD@ug,AE@w^h}y/AE@y/AD@y,AS@w'/AU@w9/AU@uK/AV@u],AU@w^i}o/AU@y/AV@y-@A@@ 9 @-%@),@5/@^j}9 7-%@%@ ',@3/@7 ; )-@@@7,%@; 9 @^k}!-@@',5/%@9 S,%@@+/%@ @?,%@@S/%@ ^l}@+,%@@+/%@@= --%@%@@9,@= I @^m}!,%@@5/%@@I,%@@ R @!-AY-,@N/@&+^n}@$H:,,R  $ * Title Screen * c+@%@/0@@I0@@ @^o}c0@@@$ --6-F:A`,%F:Aa,$AV%@. m%@@+%@@?%@^p}@eV%@F:A`,m%@F:Aa,8 M @!-@@%I,H:,$AYH:,$@^q}M B U #A#@+-@@1"7,;"I-@O"U/L /  ,@p@`/,@^r}q@`V LL7,20,5,7,8,14,8,14,20,14,12,7,12,21,15,5,16,15,16,20,22,20,22,25,16,25` QQ30,20,5,25,20,25,25,31,25,31,3^s}0,25,30,34,36,5,34,25,40,25,40,36,40,30,34,30j MM43,33,3,43,42,49,42,49,33,52,37,2,52,49,58,49,60,44,3,65,44,63,44,63,55t ^t}70,46,3,70,57,71,57,71,46~ [ @6---@@ ;,@&I/A%%W6-%@[  Q6^u}-#-@ @01,@&?/A@%M6-%@Q  Q6-#-@0@51,@u%^v}?/AE&M6-%@Q  [ @6---@@;,@&I/A"%W6-%@[  ^w}g ,@@1/A5@C,@u@1U/AE@1g,@@ K/A"@'/^x}A'@9/@@K/@@ K,A@'/A@9,A@K/A@^y} [ @6---@6@x;,@%I/A%&W6-%?5[  [ @6---@6^z}@U;,A%I/A&W6-%?5[  %6-F:@,%F:@,$AV7@@E6-%A5!^{}h@&+P:'AV,$AV,@P:'AV, 2-@2(@BY MIKE WALTERS .-@@^|}.(@ PRESS START / #A&/2@AD@@ ""6@A%P "#2^}}@@G2@&@@@]-@$@a 22@^~} DF:B2y,"@:2@D A& A%`( PP5,108,5,96,1,108,1^},96,5,91,5,81,1,91,1,81,3,72,3,53,3,60,1,91,1,81,7,72,-12 I+@%@/0@@I0@@^}< -@@1(@WOULD YOU LIKEC-@@^(@ TO BE BRIEFEDp-@@(@^}ON YOUR MISSION?F +-@@+(@(Y OR N)P :"@@K/)@:@Z ^}"@A&d "@x$n A&@x 9 +'0@@ 9AR@ 7-@@^}1(̠Ǡ4(7( V,($ You are the Chief Gunnery PostV(%Officer on the jungle planet of KALA,^} P)(!the planet Earth's only source ofP("vegetation after the Great Famine. S,($ The Earth needs this source ofS^}("vegetation, bu unfortunately so do S+(#the aliens from CLOVIS IV, who haveS(#fallen into the same situation that g^}(the Earth has.@(% Because of this, the aliens areg("now fiercely attacking the planet. j( (2($^}R@@K:_)@j@ b (} ((8($ The Clovis Aliens ha^}ve 3 typesb(%of attacking craft. The first are the T,($COMBAT SAUCERS, piloted by the RoyalT(#Strike Force. Next, the ^}DEVASTATION W-(%SATELLITES, carried over from the WarW(%of 2031. Last are the newly developed h*("PURPLE MARAUDERS, t^}he aliens' most>(advanced craft.h(% The Clovis Aliens are trying to N+(#destroy the 7 Vegetation ProcessingN(^}Plants (VPPs). Protect them by f*("eliminating the aliens before they<( destroy them.?(f(" You are the Earth's onl^}y hope! N(#( GOOD LUCK!&(N(# ;#@@K:0)^}@;@ $D2:ASSAULT.BAS# ;#@@K:0)\0